/******************************************************************************* * Copyright (c) 2004, 2006 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * IBM Corporation - initial API and implementation *******************************************************************************/ package org.eclipse.ui.tests; import java.util.ArrayList; import org.eclipse.ui.IMemento; import org.eclipse.ui.IWorkbenchPage; import org.eclipse.ui.XMLMemento; import org.eclipse.ui.internal.Perspective; import org.eclipse.ui.internal.WorkbenchPage; /** * Represents the state of a perspective (layout, etc). * * @since 3.1 */ public class PerspectiveState { private IMemento memento; /** * */ public PerspectiveState(IWorkbenchPage page) { WorkbenchPage wbPage = (WorkbenchPage) page; Perspective persp = wbPage.getActivePerspective(); XMLMemento mem = XMLMemento.createWriteRoot("perspectiveState"); persp.saveState(mem); this.memento = mem; } /** * Returns the part ids in the given folder (specify <code>null</code> for top level). * * @param folderId the folder id, or <code>null</code> * @return the part ids in the given folder (an <code>ArrayList</code> of <code>String</code>) */ public ArrayList getPartIds(String folderId) { ArrayList result = new ArrayList(); IMemento[] infos = memento.getChild("layout").getChild("mainWindow").getChildren("info"); for (int i = 0; i < infos.length; i++) { IMemento info = infos[i]; String partId = info.getString("part"); if ("true".equals(info.getString("folder"))) { if (partId.equals(folderId)) { IMemento[] pages = info.getChild("folder").getChildren("page"); for (int j = 0; j < pages.length; j++) { IMemento page = pages[j]; result.add(page.getString("content")); } } } else { if (folderId == null) { result.add(partId); } } } return result; } }